home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS 8 / P8D001E.dsk / AH.TXT.16.txt < prev   
Text File  |  2012-02-16  |  22KB  |  388 lines

  1.                              APPLE II HISTORY
  2.                              ===== == =======
  3.  
  4.                   Compiled and written by Steven Weyhrich
  5.                     (C) Copyright 1991, Zonker Software
  6.  
  7.                            (PART 16 -- LANGUAGES)
  8.                             [v1.0 :: 22 Jan 92]
  9.  
  10.  
  11. PROGRAMS "R" US
  12.  
  13.      Nearly everyone reading this is already a programmer, on one level or
  14. another.  Even if you don't know a "GOTO" from a "STA $C030", you already
  15. know how to program something.  For the act of "programming" is nothing
  16. more than giving instructions to a non-human device to have it carry out
  17. what you want it to do.  The device that most of you already know how to
  18. program is your automobile.  The act of giving those instructions may not
  19. seem like programming to YOU; nevertheless in its strictest sense,
  20. programming it is.  You want the car to go forward?  Set the transmission
  21. to "D".  Go in reverse?  Use "R".  Of course, the programming needed to
  22. operate an automobile is quite simple, and cannot be done in more than one
  23. step at a time.  An example of a device that is more complicated to program
  24. but does let you store up several instructions in advance is a VCR.  On the
  25. VCR you instruct it to record a television broadcast that starts at 7:00 pm
  26. and ends at 8:30 pm, on channel 6.  The more sophisticated VCR's can have
  27. several programs set up in advance.  If you can operate a VCR in this
  28. fashion (which is, admittedly, not always as easy as I have described), you
  29. are a programmer.
  30.      When it comes to the microcomputer, the process of programming (giving
  31. it instructions on how to carry out a task) is somewhat more complicated.
  32. This is primarily because the computer is far more flexible in its ability
  33. to accept instructions and carry them out than is an automobile or VCR.
  34. Devices attached to a computer can be manipulated by a program to do
  35. something useful (print a letter several times, or perhaps read the outside
  36. temperature and sound an alarm if it drops too low).  This flexibility,
  37. plus the speed at which a computer can execute its instructions, makes it a
  38. powerful tool for doing things that have previously taken much more effort
  39. and time.  And as a project becomes more sophisticated, so also must the
  40. programming acquire a similar level of sophistication.  The rate at which
  41. computers, including the Apple II, have increased in capacity during the
  42. past fifteen years has made it possible to design programs that can do
  43. things that were not even dreamed possible back in the days of the 4K
  44. Integer BASIC machine.
  45.      An example of programming evolution on the Apple II was given during
  46. Kansasfest in July of 1991.  To fully appreciate this narrative, you need
  47. to know a little about an old Integer BASIC program, APPLEVISION.  This was
  48. found on the DOS 3.2.1 System Master disk, and was a fun little display
  49. that showed off the use of hi-res graphics.  It began by creating a simple
  50. line drawing of a room, with a picture on the wall ("HOME SWEET HOME") and
  51. a television set.  On the screen of the TV appeared a man who danced to the
  52. tune of "Turkey In The Straw", which sounded on the built-in speaker.  It
  53. ran repeatedly, until the user interrupted the program.  It was fascinating
  54. at the time, since there was nothing in the program text that showed off
  55. exactly HOW the hi-res effects were accomplished.  But things have gotten a
  56. bit more complex as time has gone by:
  57.  
  58.  
  59.      "Roger Wagner's keynote address featured a history of hypermedia
  60.      which Roger set into action and left to run as he wandered
  61.      offstage.  The history began with Bob Bishop's classic
  62.      AppleVision, done in black and white on the original Apple II.
  63.      Progressive screens enhanced the AppleVision image using
  64.      subsequent incarnations of Apple II graphics (single
  65.      hi-resolution, double hi-resolution, and the IIGS's Super
  66.      Hi-Resolution modes).  Finally, thanks to a laserdisc player
  67.      under HyperStudio's control and a video overlay card, Roger's
  68.      image appeared within the television's screen and spoke to the
  69.      audience, completing the introduction before turning the
  70.      presentation back to Roger (returning from offstage)."<1>
  71.  
  72.  
  73.      To follow the programming progress that has made such magic possible,
  74. we will begin with the first two built-in high-level languages for the
  75. Apple II, Integer BASIC and Applesoft, and move on to a briefer discussion
  76. of some of the other languages that have been available over the years.
  77. Next will be a summary of various 6502 and 68816 assemblers that Apple
  78. programmers have used over the years.  Finally, I will present an
  79. introduction to "hyper-programming".
  80.  
  81.  
  82. FUNDAMENTALS OF PROGRAMMING
  83.  
  84.      A programming language has the standards to translate "what I want"
  85. into commands that the computer understands.  To do so, it must take some
  86. human language and convert it into the binary dialect of the computer on
  87. which it is executed.
  88.      Computer languages usually come in one of two different types:
  89. "interpreted" and "compiled".  A language that functions as an interpreter
  90. takes the text of the program and translates it at the time of execution
  91. into commands the computer can understand.  A compiled program, on the
  92. other hand, has already had the program text translated into executable
  93. code BEFORE it is run, usually including some extra code needed to carry
  94. out necessary functions of input, output, and calculations.  As such, an
  95. interpreted program usually runs more slowly, but has the advantage of
  96. being easier to modify and re-run without the delay of first re-compiling.
  97. A compiled program will ordinarily run faster, but may use more memory than
  98. an equivalent interpreted program.
  99.      Languages are also given the designation of being "high-level" or
  100. "low-level", depending on how close they are to the base language of the
  101. computer on which they run.  The lowest level of computer programming is at
  102. the level of the bytes understood as commands by the microprocessor.  This
  103. "machine language" is typically not very understandable to humans.  A
  104. low-level language more often used by programmers is "assembly language".
  105. This uses commands somewhat more understandable ("LDA $24" means "load the
  106. accumulator with the contents of memory location $24") and are then
  107. assembled (actually compiled) it into machine-readable code.  Assembly
  108. language is very powerful, since it works on the byte level of the
  109. computer.  However, as a low-level language it can be very complicated and
  110. requires an intimate understanding of the function of the computer.
  111.      As a language becomes more "high-level", it is easier for humans to
  112. read, but requires more effort from its interpreter or compiler to
  113. translate it into the native language of the computer.
  114.  
  115.  
  116. INTEGER BASIC
  117.  
  118.      This was the first language available for general use on the Apple II
  119. (aside from assembly, which will be dealt with later).  Most of the details
  120. concerning its development have already been covered in Part 3 of this
  121. History.  It was a quick, compact language, and its creation was an example
  122. of programming directly in machine language (since Steve Wozniak, the
  123. author, had no assembler available to use).  Its disadvantage was the lack
  124. of easy access to floating point operations, and it lacked some string
  125. handling functions.  Apple II users, especially those who wanted to produce
  126. programs that could be used in business applications, wanted something more
  127. powerful to use.
  128.      Despite its limitations, Integer BASIC was a language that had a
  129. fanatically loyal following.  For those thousands who purchased Apple II's
  130. from June 1977 to June 1979, this was the only programming language
  131. available, and it took on a status similar to that of a beloved first-born
  132. child.  Games, utilities, and even some simple business-use programs were
  133. written using Wozniak's hand-assembled masterpiece, and those who followed
  134. the pages of Call-A.P.P.L.E. magazine learned much about the internals of
  135. the language.  With the disassembler built into the Monitor, people tore
  136. Integer BASIC apart to learn how it worked, and to make it work better.
  137. Val Golding, the editor of Call-A.P.P.L.E., even wrote a series of columns
  138. in 1979 entitled "So Who Needs Applesoft?"  These articles showed how to
  139. simulate some of the more advanced features of Applesoft in this older
  140. BASIC.  A.P.P.L.E. even sold (under license agreement with Apple Computer)
  141. "Integer BASIC +", a relocatable RAM version of the original ROM BASIC.  It
  142. had all the features of the original language, plus a "USER" command, the
  143. ability to easily do four direction scrolling on the text and lo-res
  144. screens, easy printing of ASCII characters, and improved error handling.<2>
  145.      Apple never released a comprehensive reference manual for Integer
  146. BASIC.  The only manual available for it was primarily a tutorial (and a
  147. general introduction to using a computer).  The "Apple II BASIC Programming
  148. Manual" didn't even call it "Integer BASIC", but referred to the language
  149. as "Apple BASIC".  It gave most of its programming examples in the form of
  150. segments of a graphics and sound demo that created a lo-res ball bouncing
  151. off the sides of the screen.<3>
  152.      With the many programs available that were written in Integer BASIC,
  153. it was almost a necessity for Apple to offer a means for Apple II Plus
  154. users to be able to run the older software.  The Integer Firmware card made
  155. this "backward compatibility" possible.  This was especially important in
  156. the early days of the II Plus, when there was little new software available
  157. to use with Applesoft.
  158.  
  159.  
  160. APPLESOFT I
  161.  
  162.      Although Wozniak had written some floating point routines into the
  163. Integer Basic ROM, Apple II users needed a version of Basic that would make
  164. floating point math easier to do, particularly for business use (where the
  165. number to the right of the decimal point is as important as the one to
  166. left).  Apple decided to license a 6502 version of a floating point BASIC
  167. from Microsoft Corporation.  Back in 1977, Microsoft was producing BASIC
  168. interpreters for nearly every microcomputer that was produced.  The version
  169. Apple purchased was almost identical to the MITS extended BASIC that
  170. Microsoft had previously written for the Altair 8800.<4>,<5>
  171.      This BASIC was named "Applesoft", and was released in November of 1977
  172. on cassette.  It was loaded as a 10K program that looked to the computer
  173. just like an Integer BASIC program, though only a small part of it really
  174. was.  To make it easy to load and start from cassette, the Applesoft
  175. interpreter was attached to the end of a short Integer BASIC program.  When
  176. the Integer program was run, it poked some values into memory and jumped to
  177. the start of the machine language section, which relocated the Applesoft
  178. interpreter to the lower part of memory (at $800), just after the memory
  179. that held the screen display.
  180.      Using this version of Applesoft (which later became known as
  181. Applesoft I) could be frustrating.  It took several minutes to load from
  182. the cassette tape, and it was not dependable.  If the wrong key was pressed
  183. while entering or running an Applesoft program, the program that was being
  184. run could be wiped out, and the Applesoft interpreter itself would have to
  185. be reloaded from cassette.  However, few users knew how to make use of the
  186. floating point routines that Wozniak had written into the Integer ROM, so
  187. this unreliable Applesoft BASIC became the only practical means of doing
  188. floating point math on the Apple II.
  189.      Aside from the reliability issue, another difficulty with Applesoft
  190. involved hi-resolution graphics.  Although the Apple II was capable of
  191. displaying it, the Applesoft interpreter extended up into the memory used
  192. by the hi-res screen, and so prevented its use.  Furthermore, this early
  193. version had no built-in commands to manage hi-res graphics.<5>
  194.      Applesoft I came with a manual that was 8 1/2 inches by 11 inches in
  195. size, and sported a blue cover with square glued binding.<6>  This came to
  196. be known as the "blue book" (recall that the reference book for the
  197. computer itself was affectionately known as the "red book").  When starting
  198. the interpreter after loading it from the cassette, a screen was display
  199. announcing that Applesoft was copyright 1977 by Apple and Microsoft.  It
  200. then asked the user for the memory size of his computer, and gave options
  201. of allowing either LET and REM statements OR the use of lo-res graphics.
  202. The names of the lo-res graphics commands were very different from those
  203. that existed in Integer BASIC (and in the later versions of Applesoft).
  204. The commands were:
  205.  
  206. PLTG           = Go to lo-res graphics mode
  207. TEX            = Go to text mode
  208. PLTC N         = Set color to N (0-15)
  209. PLTP X,Y       = Plot square at X,Y
  210. PLTH X1,X2,Y   = Plot horizontal line from X1 to X2 at Y
  211. PLTV Y1,Y2,X   = Plot vertical line from Y1 to Y2 at X
  212.  
  213.      There was a note about these commands in the reference card included
  214. with Applesoft I that warned about using graphics coordinates only between
  215. 0 and 39, or a program could "self-destruct".   Apparently it lacked the
  216. error checking that could prevent the plotting of lines from spilling over
  217. into the text of the Applesoft program itself.<6>,<7>
  218.      The A.P.P.L.E. user group published a patch in 1978 that allowed
  219. programmers to avoid the question about using LET and REM statements versus
  220. lo-res graphics, and use the graphics only.  The author of the patch
  221. pointed out that the LET statements were not necessary ("A = 3" worked just
  222. as well as "LET A = 3").  The REMark statements could be simulated by
  223. putting them at the end of a GOTO line (where they were ignored by the
  224. interpreter), and the GOTO could just jump to the following line:
  225.  
  226.    530 GOTO 540: REM LINE 540 SETS VARIABLE N.
  227.    540 N = 2
  228.  
  229.      Additional patches were made available for some of the other bugs
  230. found in Applesoft I.<8>
  231.  
  232.  
  233. APPLESOFT II
  234.  
  235.      In spring 1978, Randy Wigginton and some others at Apple made some
  236. needed revisions to Applesoft.  Using a cross-assembler running on a North
  237. Star Horizon (Z-80) microcomputer, they fixed the known bugs and added
  238. other commands to control features unique to the Apple II.  These commands
  239. included the ones needed to draw and manipulate hi-res graphics.  Also, the
  240. lo-res graphics commands were renamed to be more consistent with the
  241. equivalent commands in Integer BASIC (GR, HLIN, VLIN, etc.)  This version
  242. was called "Applesoft II", and eventually it was available in five forms:
  243. Cassette RAM and Diskette RAM (which loaded to the same memory locations
  244. that interfered with hi-res graphics as did Applesoft I), Firmware card
  245. ROM, Language card RAM, and finally main board ROM (in the Apple II Plus).
  246.      When Applesoft II was started up from cassette or diskette versions,
  247. the display screen now showed a copyright date of 1978 by Apple Computer,
  248. Inc., and 1976 by Microsoft (which may be either their copyright date for
  249. the original Microsoft BASIC, or possibly for Microsoft's first 6502
  250. version).<6>  This RAM version of Applesoft II used memory from $800-$2FFF,
  251. and the Applesoft BASIC program itself was loaded beginning at $3000.  When
  252. the versions that came on ROM and for the Language Card RAM were released,
  253. the BASIC program could load at $800, and much more memory was available
  254. for it.  Some of this extra space (in high memory) was reclaimed by DOS
  255. when the Disk II was released, however.<5>
  256.      Applesoft in the original IIe was unchanged from the II Plus version.
  257. When the IIc was introduced in 1984, however, Apple programmers had
  258. cautiously made a few useful changes to the language:
  259.  
  260.      o Input processing was changed to allow lowercase entry of Applesoft
  261.        commands (they were translated into uppercase)
  262.      o Screen output commands (PRINT, TAB, HTAB, etc.) were modified to
  263.        more properly handle the 80-column screen
  264.      o Program lines (when LISTed) were changed to begin in column 2,
  265.        making screen editing easier
  266.      o All of the cassette tape routines (LOAD, SAVE, SHLOAD, STORE, and
  267.        RECALL) were removed, since the hardware did not support cassette
  268.        I/O.  The keywords were still in the token table, but now pointed to
  269.        the same memory vector as the ampersand ("&") command.
  270.      o Patches were made to the lo-res graphics commands (GR, HLIN, VLIN,
  271.        PLOT, and SCRN) to work with double lo-res graphics.  However, a bug
  272.        was introduced that allowed PLOTting vertically to areas outside of
  273.        the double lo-res graphics screen, which would land right in the
  274.        beginning of the $800 space where the Applesoft program text was
  275.        located (similar to the "plot" bug in Applesoft I).
  276.  
  277.      When the Apple IIe Enhanced ROMs were made available, Applesoft in
  278. those ROMs had undergone some similar modifications.  All the above IIc
  279. changes were added, with the exception that double lo-res graphics
  280. capability was NOT added (lack of ROM space), and the cassette I/O commands
  281. were NOT removed (since the cassette input and output port was still
  282. present).
  283.      The version of Applesoft on the Apple IIGS closely resembled the
  284. Apple IIc variant, the only exception being a fix of the double lo-res
  285. PLOTting bug.  However, a bug in the SCRN function that applied to double
  286. lo-res mode was NOT fixed.  No changes to Applesoft from the IIc version
  287. appeared in the Apple IIc Plus.<9>
  288.      The manuals written for Applesoft II were far more comprehensive than
  289. either the older "Blue book" or the Integer BASIC manual.  It gave not only
  290. programming examples for each of the commands, but included much more
  291. information about the various ways in which each Applesoft statement could
  292. be used.  It also mentioned some of the differences between Applesoft and
  293. Integer (for those who wanted to convert their older programs), and gave a
  294. little information about the internals of Applesoft to aid in creating
  295. machine language additions to the language.  Curiously, the manuals that
  296. have been reprinted even as late as 1990 by Addison-Wesley have included an
  297. odd cautionary note to programmers.  In a section in the index about
  298. "reserved words" (words reserved as Applesoft commands), it advises against
  299. using "XPLOT" as a variable name, stating that "it is a reserved word that
  300. does not correspond to a current Applesoft statement."  What is apparently
  301. meant by this comment is that at one time Apple intended to extend the
  302. language and add another command "XPLOT" to it, probably working with HPLOT
  303. in the same way that XDRAW complements DRAW in doing hi-res graphics.
  304. Examination of the command table within the Applesoft interpreter shows
  305. thereis NO entry labeled "XPLOT", and a disassembly of the interpreter
  306. shows NO preliminary code to support the command.  Somehow this precaution
  307. persisted to the present day and has never been removed, even though it is
  308. extremely unlikely that Applesoft will ever be upgraded.<10>
  309.      Particularly helpful for programmers was the foresight to include a
  310. simple extension called the "ampersand hook".  If Applesoft came across the
  311. "&" symbol while interpreting a line, it jumped to a known location in
  312. memory and left it to the programmer to insert the correct code to add a
  313. machine language extension to the language.  With the publication of
  314. important information about the internals of Applesoft in 1980, assembly
  315. language programmers could now add statements to do things that could not
  316. be done with the language as it was originally created.  Music, extended
  317. graphics, IF-THEN-ELSE logic, and even the missing "XPLOT" command could be
  318. added to the language.  The only limits were the author's imagination (and
  319. available memory).
  320.      The importance of Applesoft as an influence to productivity on the
  321. Apple II cannot be overstated.  Since the release of the Apple II Plus in
  322. 1979, every variety of Apple II has contained Applesoft in virtually an
  323. unchanged form.  This has made it possible for anybody to write programs
  324. that ALL other Apple II users will be able to use, since the language does
  325. not have to be purchased or added.  If there were thousands of Integer
  326. BASIC programs from the two years when Integer Apple II's were produced
  327. exclusively, there are hundreds of thousands of Applesoft programs that
  328. appeared over that subsequent thirteen years.  Even today, it is not
  329. uncommon for an applications program to include a configuration module
  330. written in Applesoft using the disk commands available with BASIC.SYSTEM in
  331. ProDOS.  It is often faster to write such a program in BASIC, and the
  332. author knows without a doubt that his customer will be able to run it.
  333.  
  334.  
  335. APPLESOFT 3 (?)
  336.  
  337.      In 1979 there were rumors at the West Coast Computer Faire about an
  338. enhancement to Applesoft II that was in the works at Apple.  It would
  339. possibly be called Applesoft 3, and would be as much of an enhancement over
  340. Applesoft II as that version was to Applesoft I.  Supposedly it was
  341. intended to merge DOS and BASIC, and would include such powerful functions
  342. as IF-THEN-ELSE, PRINT USING, WINDOW, and VIEW PORT.  It was predicted to
  343. be a RAM version only, and would be about 24K in size.  Knowing the events
  344. that actually followed, this rumored BASIC was probably the "Business
  345. Basic" released with the Apple III, rather than an enhancement for the
  346. Apple II.<11>
  347.  
  348.  
  349. +++++++++++++++++++++++++++++++++++
  350.  
  351. NEXT INSTALLMENT:  Languages, cont.
  352.  
  353. +++++++++++++++++++++++++++++++++++
  354.  
  355.                                    NOTES
  356.  
  357.  
  358.      <1> Doms, Dennis.  "KansasFest 1991", A2-CENTRAL, Sep 1991, p. 7.57.
  359.  
  360.      <2> -----.  (ad), PEEKING AT CALL-A.P.P.L.E., VOL 2, 1979, p. 62.
  361.  
  362.      <3> -----.  APPLEII BASIC Programming Manual, 1978, 1979, 1980, 1981.
  363.  
  364.      <4> Chien, Philip.  "The First Ten Years: A Look Back", THE APPLEII
  365.          Review, Fall/Winter 1986, p. 12.
  366.  
  367.      <5> Golding, Val J.  "Applesoft From Bottom To Top", CALL-A.P.P.L.E.
  368.          IN DEPTH #1, 1981, p. 8.
  369.  
  370.      <6> Bernsten, Jeff.  GEnie, A2 ROUNDTABLE, Apr 1991, Category 2, Topic
  371.          16.
  372.  
  373.      <7> Arkley, John.  (personal telephone call), Sep 9, 1991.
  374.  
  375.      <8> -----.  "Apple Patches", PEEKING AT CALL-A.P.P.L.E., VOL 1, 1978,
  376.          p. 40.
  377.  
  378.      <9> Weyhrich, Steven.  "Applesoft Miscellaneous Information",
  379.          APPLESOFT CONCORDANCE V1.0, Dec 1989.
  380.  
  381.      <10> Kamins, Scott.  "Appendix D  Reserved Words", APPLESOFT BASIC
  382.          PROGRAMMER'S REFERENCE MANUAL, 1982, 1983.
  383.  
  384.      <11> Aldrich, Darrell.  "The Computer Faire And The Apple", PEEKING AT
  385.          CALL-A.P.P.L.E., VOL 2, 1979, p. 158.
  386.  
  387.  
  388.